updated: 2022-01-23_12:32:31-05:00
updated: 2021-11-29_10:34:05-05:00
Game Development
- Building text-adventure games (3 of them)
- Lots of twine programming
- Final DS Game
- Game Loop
- Suggestion for Lecture:
- Go over Semiotics and how it relates to game design.
Meaning: Descriptive vs Evaluative
- Descriptive:
- Evaluative:
- Meaningful play does not necessarily mean meaningful choices
3d Graphics
- vector vs array
- 2d vs 3d
- Vertex:
- [x y z]
- Matrix
- [a b c]c
[d e f]
[g h i] - How a vector changes...
- [a b c]c
while(t)
read input
update state
show state
Compression: reducing redundancy
Twine Pitches
Actor?
Teamwork Agile
Decision Making
We could use min/max tree
This is a decision space. We try and
What is a cellular automata
- A grid of automata...
- group of states of people in neighborhood is my view?
Eg:
Game of Life
X | ||
if there's 3 or more neighbors, you turn on
if there's less than 2 neighbors, you are lonely and turn off
So lines of three flip
walking skeleton
C++ Stuff
- No garbage collection
- make sure to deallocate memory
- if new is called for an array, before the array is the size stored
Design Patterns
Example, Inheritance:
I need to keep track of espresso and coffee
Class called espresso, and a class called coffee
What if people want flavor in their coffee?
vanilla espresso? milk espresso? vanilla milk espresso?
bazillion classes, will never be complete
What is the solution? fields in classes (Not using inheritance)
New class called Special(flavor,baseDrink);
drink is parent type
[drink] -> [special|flavor|baseDrink|0.25*baseDrink.price]
[drink] -> [espresso|1.00]
[drink] -> [coffee|0.5]
Decorator Pattern
- One of your subtypes can contain a list of base types.
#direction: down
[widget] - [panel|list<widget>]
[widget] - [window]
Flyweight Pattern
- Basically instancing
Turing Machines
- Pre-Turing machines
- Hilbert came up with 'Century' problems
- Come up with a way for giving steps to problems that look like: a$^n$+b$^n$=c$^n$
- an algorithm for solving this
- Turing came up with the idea of a nominal machine
- There are only as many programs as there are integers, and ^^ requires real numbers, real > int $\therefore$ impossible
- Established linguistics to talk about computing
STD Lib
Data structures and the like
- ArrayList <Integer.> (java) - typing has to be object
vector <int> v;
// (c++) - typing can be data/objectv.push_back(1);
- allows overloading operators
- v[0] instead of v.at(0);
- Associative Array
- Map
map<string,string> m;
- m["cat"];
- this is operator overloading
- imagine you make a vector
vec3 v{1,2.5,3}, w{0,1,2},u;
u = v+w;s
Post-increment makes a copy of whatever you are using:
i++ makes a copy of i to return.
empty overload = ++i, if int is in the overload it's i++
vec3 operator++(); // ++i
vec3 operator++(int x); // i++
Constructors:
- return this()
3d graphics?
Three spaces:
- model space
- world space
- view space
Pathfinding
Graph...
- nodes with weights
Shortest Single Source Path
Dijkstra's algorithm
destination nodes are called: horizon
sorted by distance
breadth first, all 1st level nodes
A star algorithm
for walking in game?
Polymorphism
Polymorphism: relationship between classes; the idea that
Networking
Peer to peer vs server client
Distributed Trust Algorithms
Encryption without latency?
History of Video Games
1958: Tennis for two
1961: Spacewar
1966: Ralph Baer starts working on TV machine
1971/2: Became first home console: Magnavox Odyssey
Nolan Bushnell and Atari:
Lost money from atari, got chuckecheese